Skip to content

USHIFT-7065: CI implementation: Support MicroShift V5.0 on RHEL 9.8 GA Implementation - #7139

Merged
openshift-merge-bot[bot] merged 5 commits into
openshift:mainfrom
agullon:USHIFT-7065
Sep 3, 2026
Merged

USHIFT-7065: CI implementation: Support MicroShift V5.0 on RHEL 9.8 GA Implementation#7139
openshift-merge-bot[bot] merged 5 commits into
openshift:mainfrom
agullon:USHIFT-7065

Conversation

@agullon

@agullon agullon commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Add CI release scenarios for same-OS-version MicroShift upgrades on
RHEL 9.8 and standardize RPM scenario naming.

New upgrade scenarios (5 files):

Ticket Type Path Upgrade
USHIFT-7282 RPM el98-yminus2@el98-lrel@rpm.sh 4.21 → 5.0
USHIFT-7283 ostree el98-yminus1@el98-lrel@lvms-standard.sh 4.22 → 5.0
USHIFT-7283 ostree el98-yminus2@el98-lrel@lvms-standard.sh 4.21 → 5.0
USHIFT-7284 bootc el98-y1@el98-lrel@lvms-standard.sh 4.22 → 5.0
USHIFT-7284 bootc el98-y2@el98-lrel@lvms-standard.sh 4.21 → 5.0

New image blueprints (4 files):

Start images for el98 with older MicroShift versions — required by the
ostree and bootc scenarios above.

  • rhel98-brew-y1-with-optionals.toml / rhel98-brew-y2-with-optionals.toml
  • rhel98-bootc-brew-y1-with-optional.containerfile / rhel98-bootc-brew-y2-with-optional.containerfile

Renames (3 existing files):

Before After
el98@rpm-upgrade.sh el98-yminus1@el98-lrel@rpm.sh
el98@rpm-standard1.sh el98-lrel@rpm-standard1.sh
el98@rpm-standard2.sh el98-lrel@rpm-standard2.sh

Test plan

  • Release job builds el98 y-1/y-2 ostree and bootc images from new blueprints
  • RPM scenario installs 4.21 from rhocp and upgrades to 5.0 brew
  • ostree/bootc scenarios upgrade from y-1/y-2 to latest release on el98
  • LVMS workloads persist across all upgrades
  • standard1 and standard2 suites pass after each upgrade
  • Renamed scenarios still run correctly

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added RHEL 9.8 image definitions for Brew Y-1 and Y-2 releases, including optional packages, services, and firewall settings.
    • Added bootable-container image definitions for MicroShift release testing.
    • Added RPM and bootable-container upgrade scenarios covering LVMS workload and resource persistence.
    • Added standard installation, upgrade, validation, and cleanup scenarios for RHEL 9.8 release testing.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Aug 3, 2026
@openshift-ci-robot

openshift-ci-robot commented Aug 3, 2026

Copy link
Copy Markdown

@agullon: This pull request references USHIFT-7065 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add image blueprints (ostree .toml + bootc .containerfile) for RHEL 9.8 with y-1 (4.22) and y-2 (4.21) MicroShift versions
  • Add RPM upgrade scenario from 4.21→5.0 on RHEL 9.8 (USHIFT-7282)
  • Add ostree upgrade scenarios from 4.22→5.0 and 4.21→5.0 on RHEL 9.8 with LVMS validation + standard1/standard2 suites (USHIFT-7283)
  • Add bootc upgrade scenarios from 4.22→5.0 and 4.21→5.0 on RHEL 9.8 with LVMS validation + standard1/standard2 suites (USHIFT-7284)

Tickets

  • USHIFT-7282 — RPM CI test scenario upgrade path from 4.21 on 9.8 to 5.0 on 9.8
  • USHIFT-7283 — ostree CI test scenarios upgrade paths from 4.21 and 4.22 on 9.8 to 5.0 on 9.8
  • USHIFT-7284 — bootc CI test scenarios upgrade paths from 4.21 and 4.22 on 9.8 to 5.0 on 9.8

New Files

Image Blueprints (4 files):

  • test/image-blueprints/layer4-release/group2/rhel98-brew-y1-with-optionals.toml
  • test/image-blueprints/layer4-release/group1/rhel98-brew-y2-with-optionals.toml
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel98-bootc-brew-y1-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel98-bootc-brew-y2-with-optional.containerfile

Scenario Files (5 files):

  • test/scenarios/releases/el98-yminus2@rpm-upgrade.sh
  • test/scenarios/releases/el98-yminus1@el98-lrel@lvms-standard.sh
  • test/scenarios/releases/el98-yminus2@el98-lrel@lvms-standard.sh
  • test/scenarios-bootc/el9/releases/el98-y1@el98-lrel@lvms-standard.sh
  • test/scenarios-bootc/el9/releases/el98-y2@el98-lrel@lvms-standard.sh

Test plan

  • CI validates shellcheck on new .sh files
  • Release job builds el98 y-1/y-2 ostree and bootc images
  • RPM upgrade scenario installs 4.21 from rhocp and upgrades to 5.0 brew
  • ostree upgrade scenarios boot from el98 y-1/y-2 commits and upgrade to el98 latest release
  • bootc upgrade scenarios boot from el98 y-1/y-2 containers and upgrade to el98 latest release

🤖 Generated with Claude Code

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci
openshift-ci Bot requested review from copejon and eslutsky August 3, 2026 08:58
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 3, 2026
@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: d1021658-d108-4980-bf75-c6c82c04da66

📥 Commits

Reviewing files that changed from the base of the PR and between 36591e2 and 8cac063.

📒 Files selected for processing (12)
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel98-bootc-brew-y1-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel98-bootc-brew-y2-with-optional.containerfile
  • test/image-blueprints/layer4-release/group1/rhel98-brew-y2-with-optionals.toml
  • test/image-blueprints/layer4-release/group2/rhel98-brew-y1-with-optionals.toml
  • test/scenarios-bootc/el9/releases/el98-y1@el98-lrel@lvms-standard.sh
  • test/scenarios-bootc/el9/releases/el98-y2@el98-lrel@lvms-standard.sh
  • test/scenarios/releases/el98-lrel@rpm-standard1.sh
  • test/scenarios/releases/el98-lrel@rpm-standard2.sh
  • test/scenarios/releases/el98-yminus1@el98-lrel@lvms-standard.sh
  • test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh
  • test/scenarios/releases/el98-yminus2@el98-lrel@lvms-standard.sh
  • test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh
🚧 Files skipped from review as they are similar to previous changes (11)

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


Walkthrough

Adds RHEL 9.8 Brew Y-1 and Y-2 image blueprints, bootc LVMS upgrade scenarios, RPM LVMS upgrade scenarios, RPM standard scenarios, and RPM upgrade scenarios.

Changes

RHEL 9.8 release validation

Layer / File(s) Summary
RHEL 9.8 image blueprints
test/image-blueprints-bootc/el9/..., test/image-blueprints/layer4-release/...
Adds release-gated image definitions with MicroShift packages, services, and firewall settings.
Bootc LVMS upgrade scenarios
test/scenarios-bootc/el9/releases/*
Adds ordered VM scenarios that validate LVMS workloads and resources before and after bootc upgrades.
RPM LVMS upgrade scenarios
test/scenarios/releases/el98-yminus*...lvms-standard.sh
Adds ordered RPM upgrade scenarios with LVMS persistence checks and standard validation.
RPM standard and upgrade scenarios
test/scenarios/releases/el98-lrel@rpm-standard*.sh, test/scenarios/releases/el98-yminus*@el98-lrel@rpm.sh
Adds RHEL 9.8 VM setup, repository configuration, installation, removal, and successful RPM upgrade suites.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: ⚪ Minimal · up to 8cac0

This change adds RHEL 9.8 upgrade-validation coverage and image blueprints for supported MicroShift release paths. No concrete merge-blocking risk is currently identified.

Sequence Diagram(s)

sequenceDiagram
  participant Scenario
  participant host1
  participant MicroShift
  participant RobotFrameworkSuites
  Scenario->>host1: Create and configure RHEL 9.8 VM
  host1->>MicroShift: Configure repositories and wait for readiness
  Scenario->>MicroShift: Validate LVMS workloads and resources
  Scenario->>RobotFrameworkSuites: Run installation or upgrade suite
  RobotFrameworkSuites->>host1: Run standard and removal validation
Loading

Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error The new scenario paths expose the CI pull secret through shell tracing. CI runs each scenario as bash -x (test/bin/ci_phase_boot_and_test.sh:123-129) and captures stderr in the job log. The added … Prevent secret-bearing commands from reaching xtrace. Update prepare_kickstart so it does not interpolate PULL_SECRET_CONTENT while tracing is enabled: save the current xtrace state, disable tracing around the substitution, restore the …
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 27 functions across 9 files. (4 skipped: 4… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (13 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the CI implementation for MicroShift V5.0 on RHEL 9.8 GA. It matches the main changes, although “Implementation” is repeated.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PASS: The PR changes only Containerfile, TOML, and shell scenario files, plus three pure renames. The changed files contain no Ginkgo title declarations such as It, Describe, Context, or When.…
Test Structure And Quality ✅ Passed PASS: The PR changes only Containerfiles, TOML blueprints, and Bash scenario scripts. It adds no Ginkgo test code or Ginkgo constructs. The changed scenarios invoke Robot Framework .robot suites; th…
Microshift Test Compatibility ✅ Passed PASS: The complete PR diff adds only shell scenarios, Containerfiles, and TOML blueprints, plus file renames. It adds no Go files or Ginkgo declarations such as It(), Describe(), Context(), or When().…
Single Node Openshift (Sno) Test Compatibility ✅ Passed PASS: The PR adds only Containerfiles, TOML blueprints, and shell scenario orchestration. The diff contains no Go or Ginkgo test files and no added It(), Describe(), Context(), When(), or SNO-…
Topology-Aware Scheduling Compatibility ✅ Passed PASS: The PR changes only image blueprint templates and release test scenario scripts, plus three 100% renames. It adds no deployment manifests, operator code, controllers, or topology scheduling fiel…
Ote Binary Stdout Contract ✅ Passed The complete diff from the PR base (36591e2) to HEAD contains 12 shell, TOML, and Containerfile paths only; it contains no changed Go or other OTE binary source. Searches of all added lines and chan…
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PASS: The pull request adds only shell scenario scripts and image blueprint/container configuration, plus four 100% file renames. The complete diff from origin/main contains no changed Go files and …
No-Weak-Crypto ✅ Passed PASS. The PR diff from origin/main adds blueprints and scenario orchestration only. Exact scans of all added lines and changed file contents found no MD5, SHA1, DES, 3DES, RC4, Blowfish, or ECB usage.…
Container-Privileges ✅ Passed No listed container privilege setting is introduced. Against origin/main, the added lines contain no privileged: true, host PID/network/IPC, SYS_ADMIN, allowPrivilegeEscalation: true, root-use…
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 27 functions across 9 files. (4 skipped: 4 unsupported.)

Full details: Stable And Deterministic Test Names

Explanation

PASS: The PR changes only Containerfile, TOML, and shell scenario files, plus three pure renames. The changed files contain no Ginkgo title declarations such as It, Describe, Context, or When. Dynamic release and image values appear in blueprint metadata or scenario arguments, not test titles. The custom failure condition is not introduced.

Full details: Test Structure And Quality

Explanation

PASS: The PR changes only Containerfiles, TOML blueprints, and Bash scenario scripts. It adds no Ginkgo test code or Ginkgo constructs. The changed scenarios invoke Robot Framework .robot suites; the Ginkgo references are comments only. Therefore the Ginkgo-specific quality requirements do not apply.

Full details: Microshift Test Compatibility

Explanation

PASS: The complete PR diff adds only shell scenarios, Containerfiles, and TOML blueprints, plus file renames. It adds no Go files or Ginkgo declarations such as It(), Describe(), Context(), or When(). The new shell scenarios invoke existing Robot Framework and Ginkgo-related setup; they do not add Ginkgo e2e tests. Therefore, this custom check is not applicable.

Full details: Single Node Openshift (Sno) Test Compatibility

Explanation

PASS: The PR adds only Containerfiles, TOML blueprints, and shell scenario orchestration. The diff contains no Go or Ginkgo test files and no added It(), Describe(), Context(), When(), or SNO-topology test code. The scenarios invoke existing Robot Framework suites and existing helper functions, so this SNO-specific check is not applicable.

Full details: Topology-Aware Scheduling Compatibility

Explanation

PASS: The PR changes only image blueprint templates and release test scenario scripts, plus three 100% renames. It adds no deployment manifests, operator code, controllers, or topology scheduling fields such as affinity, topology spread, node selectors, tolerations, PDBs, or replica logic. The LVMS Deployment used by the new scenarios is in an unchanged helper and has only replicas: 1 without scheduling constraints. Therefore, the PR does not introduce a failure condition from this check.

Full details: Ote Binary Stdout Contract

Explanation

The complete diff from the PR base (36591e2) to HEAD contains 12 shell, TOML, and Containerfile paths only; it contains no changed Go or other OTE binary source. Searches of all added lines and changed files found no process-level stdout APIs, klog configuration, Ginkgo suite hooks, TestMain, or main function. The added shell echo calls are scenario-script output, not stdout writes from an OTE binary process. The contract failure condition is not introduced.

Full details: Ipv6 And Disconnected Network Test Compatibility

Explanation

PASS: The pull request adds only shell scenario scripts and image blueprint/container configuration, plus four 100% file renames. The complete diff from origin/main contains no changed Go files and no added or resulting It(), Describe(), Context(), or When() declarations. Therefore, the Ginkgo IPv4 and disconnected-network compatibility check is not applicable.

Full details: No-Weak-Crypto

Explanation

PASS. The PR diff from origin/main adds blueprints and scenario orchestration only. Exact scans of all added lines and changed file contents found no MD5, SHA1, DES, 3DES, RC4, Blowfish, or ECB usage. The added shell code delegates to VM, repository, firewall, and Robot Framework helpers. It adds no custom cryptography and no secret or token comparisons. The renamed RPM files are 100% content-preserving renames.

Full details: Container-Privileges

Explanation

No listed container privilege setting is introduced. Against origin/main, the added lines contain no privileged: true, host PID/network/IPC, SYS_ADMIN, allowPrivilegeEscalation: true, root-user directive, or privileged container launch option. The new Containerfiles only use build-time RUN commands for package installation and image configuration. The scenario renames are 100% content-preserving, so existing sudo usage is not introduced by this PR. No changed file defines a Kubernetes security context or an explicit root runtime user.

Full details: No-Sensitive-Data-In-Logs

Explanation

The new scenario paths expose the CI pull secret through shell tracing. CI runs each scenario as bash -x (test/bin/ci_phase_boot_and_test.sh:123-129) and captures stderr in the job log. The added VM setup hooks call prepare_kickstart (test/scenarios-bootc/el9/releases/el98-y1@el98-lrel@lvms-standard.sh:16, the analogous y2 and ostree files). prepare_kickstart expands PULL_SECRET_CONTENT, loaded from ~/.pull-secret.json, directly into the sed command at test/bin/scenario.sh:20-21,532-539. Bash xtrace therefore writes the full pull-secret JSON, including registry credentials or tokens, to the CI log. The repository documentation identifies this file as the OpenShift pull secret containing user credentials. This is an existing helper defect, but the pull request activates it for four new scenarios.

Resolution

Prevent secret-bearing commands from reaching xtrace. Update prepare_kickstart so it does not interpolate PULL_SECRET_CONTENT while tracing is enabled: save the current xtrace state, disable tracing around the substitution, restore the state immediately after, and verify the generated kickstart file remains protected. Prefer a protected temporary file or a non-command-line input for the secret. Add a regression check that CI logs contain neither the pull-secret JSON nor credential fields.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/scenarios/releases/el98-yminus1`@el98-lrel@lvms-standard.sh:
- Around line 1-7: Update the three scenario
files—test/scenarios/releases/el98-yminus1@el98-lrel@lvms-standard.sh (lines
1-7), test/scenarios/releases/el98-yminus2@el98-lrel@lvms-standard.sh (lines
1-7), and test/scenarios/releases/el98-yminus2@rpm-upgrade.sh (lines 1-14)—to
use the #!/usr/bin/bash shebang and add set -euo pipefail immediately after it.

In `@test/scenarios/releases/el98-yminus2`@rpm-upgrade.sh:
- Line 43: Update the reponame declaration in the release-upgrade script to
declare the readonly local variable separately, then assign it from basename in
a distinct command so basename’s exit status is preserved and ShellCheck SC2155
is resolved.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 72fa958a-0fde-4f90-ae7e-54634c04daa4

📥 Commits

Reviewing files that changed from the base of the PR and between 2484f93 and c7d0152.

📒 Files selected for processing (9)
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel98-bootc-brew-y1-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel98-bootc-brew-y2-with-optional.containerfile
  • test/image-blueprints/layer4-release/group1/rhel98-brew-y2-with-optionals.toml
  • test/image-blueprints/layer4-release/group2/rhel98-brew-y1-with-optionals.toml
  • test/scenarios-bootc/el9/releases/el98-y1@el98-lrel@lvms-standard.sh
  • test/scenarios-bootc/el9/releases/el98-y2@el98-lrel@lvms-standard.sh
  • test/scenarios/releases/el98-yminus1@el98-lrel@lvms-standard.sh
  • test/scenarios/releases/el98-yminus2@el98-lrel@lvms-standard.sh
  • test/scenarios/releases/el98-yminus2@rpm-upgrade.sh

Comment thread test/scenarios/releases/el98-yminus1@el98-lrel@lvms-standard.sh
Comment thread test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
test/scenarios/releases/el98-lrel@rpm-standard1.sh (1)

1-14: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Align the four sourced scripts with the shell-script policy.

test/bin/scenario.sh enables strict mode before sourcing these files. Change all four shebangs to #!/usr/bin/bash and add set -euo pipefail, or document an explicit exception for sourced scenario scripts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/scenarios/releases/el98-lrel`@rpm-standard1.sh around lines 1 - 14,
Update all four sourced scenario
scripts—test/scenarios/releases/el98-lrel@rpm-standard1.sh (lines 1-14),
test/scenarios/releases/el98-lrel@rpm-standard2.sh (lines 1-14),
test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh (lines 1-14), and
test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh (lines 1-14)—to use the
/usr/bin/bash shebang and enable set -euo pipefail, or document an explicit
shell-policy exception for these scripts.

Sources: Coding guidelines, Learnings

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/scenarios/releases/el98-yminus1`@el98-lrel@rpm.sh:
- Around line 51-56: Pin RHEL 9.8 after repository setup and before dependency
installation by adding the subscription-manager release command before run_tests
host1 in both test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh (lines
51-56) and test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh (lines 51-55).

---

Nitpick comments:
In `@test/scenarios/releases/el98-lrel`@rpm-standard1.sh:
- Around line 1-14: Update all four sourced scenario
scripts—test/scenarios/releases/el98-lrel@rpm-standard1.sh (lines 1-14),
test/scenarios/releases/el98-lrel@rpm-standard2.sh (lines 1-14),
test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh (lines 1-14), and
test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh (lines 1-14)—to use the
/usr/bin/bash shebang and enable set -euo pipefail, or document an explicit
shell-policy exception for these scripts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: e700dba5-0116-44b6-9590-298ab22c3bd5

📥 Commits

Reviewing files that changed from the base of the PR and between c1a2138 and b7ab499.

📒 Files selected for processing (4)
  • test/scenarios/releases/el98-lrel@rpm-standard1.sh
  • test/scenarios/releases/el98-lrel@rpm-standard2.sh
  • test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh
  • test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🧹 Nitpick comments (1)
test/scenarios/releases/el98-lrel@rpm-standard1.sh (1)

1-14: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Align the four sourced scripts with the shell-script policy.

test/bin/scenario.sh enables strict mode before sourcing these files. Change all four shebangs to #!/usr/bin/bash and add set -euo pipefail, or document an explicit exception for sourced scenario scripts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/scenarios/releases/el98-lrel`@rpm-standard1.sh around lines 1 - 14,
Update all four sourced scenario
scripts—test/scenarios/releases/el98-lrel@rpm-standard1.sh (lines 1-14),
test/scenarios/releases/el98-lrel@rpm-standard2.sh (lines 1-14),
test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh (lines 1-14), and
test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh (lines 1-14)—to use the
/usr/bin/bash shebang and enable set -euo pipefail, or document an explicit
shell-policy exception for these scripts.

Sources: Coding guidelines, Learnings

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/scenarios/releases/el98-yminus1`@el98-lrel@rpm.sh:
- Around line 51-56: Pin RHEL 9.8 after repository setup and before dependency
installation by adding the subscription-manager release command before run_tests
host1 in both test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh (lines
51-56) and test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh (lines 51-55).

---

Nitpick comments:
In `@test/scenarios/releases/el98-lrel`@rpm-standard1.sh:
- Around line 1-14: Update all four sourced scenario
scripts—test/scenarios/releases/el98-lrel@rpm-standard1.sh (lines 1-14),
test/scenarios/releases/el98-lrel@rpm-standard2.sh (lines 1-14),
test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh (lines 1-14), and
test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh (lines 1-14)—to use the
/usr/bin/bash shebang and enable set -euo pipefail, or document an explicit
shell-policy exception for these scripts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: e700dba5-0116-44b6-9590-298ab22c3bd5

📥 Commits

Reviewing files that changed from the base of the PR and between c1a2138 and b7ab499.

📒 Files selected for processing (4)
  • test/scenarios/releases/el98-lrel@rpm-standard1.sh
  • test/scenarios/releases/el98-lrel@rpm-standard2.sh
  • test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh
  • test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh
🛑 Comments failed to post (1)
test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh (1)

51-56: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

rg -n -C 4 --glob '*.sh' \
    'launch_vm rhel-9\.8|subscription-manager release --set 9\.8|subscription_manager_register|run_tests host1' \
    test/scenarios/releases

Repository: openshift/microshift

Length of output: 47071


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

printf '%s\n' '--- target scenarios ---'
cat -n 'test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh' | sed -n '1,90p'
cat -n 'test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh' | sed -n '1,90p'

printf '%s\n' '--- helper definitions and release pin usage ---'
rg -n -C 6 \
  'subscription_manager_register|subscription-manager release --set|configure_rhocp_repo|configure_microshift_mirror' \
  --glob '*.sh' .

Repository: openshift/microshift

Length of output: 36962


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

printf '%s\n' '--- repository helper implementations ---'
sed -n '1240,1375p' test/bin/scenario.sh

printf '%s\n' '--- test runner and package-install call sites ---'
rg -n -C 5 \
  'run_tests\(\)|run_tests |dnf( |-|$)|yum( |-|$)|package|install' \
  test/bin test/suites test/scenarios/releases \
  --glob '*.sh' --glob '*.robot' \
  | sed -n '1,320p'

printf '%s\n' '--- registration implementation ---'
cat -n test/bin/subscription_manager_register.sh | sed -n '1,180p'

Repository: openshift/microshift

Length of output: 29620


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

printf '%s\n' '--- launch and RHEL release configuration flow ---'
rg -n -C 8 \
  'launch_vm\(\)|SET_RHEL_RELEASE|configure-vm\.sh|VERSION_ID_MINOR|VERSION_ID=' \
  test/bin scripts test \
  --glob '*.sh' \
  | sed -n '1,360p'

printf '%s\n' '--- release commands in all relevant scenario families ---'
rg -n -C 3 \
  'launch_vm rhel-9\.8|subscription-manager release --set 9\.8|EXPECTED_OS_VERSION:9\.8' \
  test/scenarios/releases test/scenarios-bootc \
  --glob '*.sh' \
  | sed -n '1,360p'

Repository: openshift/microshift

Length of output: 47539


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path

targets = [
    Path("test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh"),
    Path("test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh"),
]
standard = [
    Path("test/scenarios/releases/el98-lrel@rpm-standard1.sh"),
    Path("test/scenarios/releases/el98-lrel@rpm-standard2.sh"),
]
pin = 'subscription-manager release --set 9.8'

def check(path):
    text = path.read_text()
    required = {
        "launch_vm rhel-9.8": "launch_vm rhel-9.8" in text,
        "subscription_manager_register host1": "subscription_manager_register host1" in text,
        "release pin": pin in text,
        "run_tests host1": "run_tests host1" in text,
    }
    positions = {name: text.find(value) for name, value in [
        ("register", "subscription_manager_register host1"),
        ("pin", pin),
        ("run_tests", "run_tests host1"),
    ]}
    print(path)
    print(required)
    print(positions)

for path in targets + standard:
    check(path)

print("All tracked release-pin occurrences:")
for path in sorted(Path(".").rglob("*.sh")):
    text = path.read_text(errors="replace")
    if pin in text:
        print(path)
PY

Repository: openshift/microshift

Length of output: 1305


Pin RHEL 9.8 before dependency installation

Add run_command_on_vm host1 "sudo subscription-manager release --set 9.8" after repository setup and before run_tests host1 in both upgrade scenarios.

📍 Affects 2 files
  • test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh#L51-L56 (this comment)
  • test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh#L51-L55
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/scenarios/releases/el98-yminus1`@el98-lrel@rpm.sh around lines 51 - 56,
Pin RHEL 9.8 after repository setup and before dependency installation by adding
the subscription-manager release command before run_tests host1 in both
test/scenarios/releases/el98-yminus1@el98-lrel@rpm.sh (lines 51-56) and
test/scenarios/releases/el98-yminus2@el98-lrel@rpm.sh (lines 51-55).

@agullon agullon changed the title USHIFT-7065: Add el98→el98 upgrade CI scenarios for MicroShift 5.0 USHIFT-7065: CI implementation: Support MicroShift V5.0 on RHEL 9.8 GA Implementation Aug 4, 2026
@agullon

agullon commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

/retest

2 similar comments
@agullon

agullon commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

/retest

@agullon

agullon commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

/retest

@agullon

agullon commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

Backport to release-5.0: #7297

Add ostree (.toml) and bootc (.containerfile) image blueprints for
RHEL 9.8 with y-1 (4.22) and y-2 (4.21) MicroShift versions.

These start images are prerequisites for the el98→el98 upgrade CI
scenarios added in subsequent commits.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
Test RPM-based upgrade from MicroShift 4.21 (y-2) to 5.0 on RHEL 9.8
using the YMINUS2 release repo and brew RPMs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
…on RHEL 9.8

Test ostree upgrades from MicroShift 4.22 (y-1) and 4.21 (y-2) to 5.0
on RHEL 9.8 with LVMS workload validation and standard1+standard2 suites.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
…n RHEL 9.8

Test bootc upgrades from MicroShift 4.22 (y-1) and 4.21 (y-2) to 5.0
on RHEL 9.8 with LVMS workload validation and standard1+standard2 suites.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
- el98@rpm-upgrade.sh → el98-yminus1@el98-lrel@rpm.sh
- el98@rpm-standard1.sh → el98-lrel@rpm-standard1.sh
- el98@rpm-standard2.sh → el98-lrel@rpm-standard2.sh
- el98-yminus2@rpm-upgrade.sh → el98-yminus2@el98-lrel@rpm.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@agullon

agullon commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

/test e2e-aws-tests-release
/test e2e-aws-tests-release-arm
/test e2e-aws-tests-bootc-release-el9
/test e2e-aws-tests-bootc-release-el10
/test e2e-aws-tests-bootc-release-arm-el9
/test e2e-aws-tests-bootc-release-arm-el10

@agullon

agullon commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

/test e2e-aws-tests
/test e2e-aws-tests-arm
/test e2e-aws-tests-bootc-arm-el9
/test e2e-aws-tests-bootc-arm-el10
/test e2e-aws-tests-bootc-el9
/test e2e-aws-tests-bootc-el10

@openshift-ci-robot

openshift-ci-robot commented Sep 3, 2026

Copy link
Copy Markdown

@agullon: This pull request references USHIFT-7065 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.1.0" version, but no target version was set.

Details

In response to this:

Summary

Add CI release scenarios for same-OS-version MicroShift upgrades on
RHEL 9.8 and standardize RPM scenario naming.

New upgrade scenarios (5 files):

Ticket Type Path Upgrade
USHIFT-7282 RPM el98-yminus2@el98-lrel@rpm.sh 4.21 → 5.0
USHIFT-7283 ostree el98-yminus1@el98-lrel@lvms-standard.sh 4.22 → 5.0
USHIFT-7283 ostree el98-yminus2@el98-lrel@lvms-standard.sh 4.21 → 5.0
USHIFT-7284 bootc el98-y1@el98-lrel@lvms-standard.sh 4.22 → 5.0
USHIFT-7284 bootc el98-y2@el98-lrel@lvms-standard.sh 4.21 → 5.0

New image blueprints (4 files):

Start images for el98 with older MicroShift versions — required by the
ostree and bootc scenarios above.

  • rhel98-brew-y1-with-optionals.toml / rhel98-brew-y2-with-optionals.toml
  • rhel98-bootc-brew-y1-with-optional.containerfile / rhel98-bootc-brew-y2-with-optional.containerfile

Renames (3 existing files):

Before After
el98@rpm-upgrade.sh el98-yminus1@el98-lrel@rpm.sh
el98@rpm-standard1.sh el98-lrel@rpm-standard1.sh
el98@rpm-standard2.sh el98-lrel@rpm-standard2.sh

Test plan

  • Release job builds el98 y-1/y-2 ostree and bootc images from new blueprints
  • RPM scenario installs 4.21 from rhocp and upgrades to 5.0 brew
  • ostree/bootc scenarios upgrade from y-1/y-2 to latest release on el98
  • LVMS workloads persist across all upgrades
  • standard1 and standard2 suites pass after each upgrade
  • Renamed scenarios still run correctly

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
  • Added RHEL 9.8 image definitions for Brew Y-1 and Y-2 releases, including optional packages, services, and firewall settings.
  • Added bootable-container image definitions for MicroShift release testing.
  • Added RPM and bootable-container upgrade scenarios covering LVMS workload and resource persistence.
  • Added standard installation, upgrade, validation, and cleanup scenarios for RHEL 9.8 release testing.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@agullon

agullon commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

/override ci/prow/e2e-aws-tests-bootc-arm-el9
/override ci/prow/e2e-aws-tests
/override ci/prow/e2e-aws-tests-bootc-el10

because not release CI jobs

@openshift-ci

openshift-ci Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

@agullon: Overrode contexts on behalf of agullon: ci/prow/e2e-aws-tests, ci/prow/e2e-aws-tests-bootc-arm-el9, ci/prow/e2e-aws-tests-bootc-el10

Details

In response to this:

/override ci/prow/e2e-aws-tests-bootc-arm-el9
/override ci/prow/e2e-aws-tests
/override ci/prow/e2e-aws-tests-bootc-el10

because not release CI jobs

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci

openshift-ci Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

@agullon: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@pacevedom pacevedom left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Sep 3, 2026
@openshift-ci

openshift-ci Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: agullon, pacevedom

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@agullon

agullon commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

/verified by CI

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Sep 3, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@agullon: This PR has been marked as verified by CI.

Details

In response to this:

/verified by CI

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-merge-bot
openshift-merge-bot Bot merged commit b76c9a0 into openshift:main Sep 3, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants